package com.train.mgr.modules.biz.service;

import com.train.common.model.PageResult;
import com.train.mgr.modules.biz.dto.TraineeStudyExerciseSearchVo;
import com.train.mgr.modules.biz.dto.request.LessonUserExerciseReqDTO;
import com.train.mgr.modules.biz.dto.request.TraineeExercisePageDTO;
import com.train.mgr.modules.biz.dto.request.TraineeLessionListReqDTO;
import com.train.mgr.modules.biz.dto.request.TraineeProjectReportReqDTO;
import com.train.mgr.modules.biz.dto.response.*;
import com.train.mgr.modules.biz.entity.LessonUserExercise;

import java.math.BigDecimal;
import java.util.List;

public interface ITraineeService {
    TraineeCourseHomeDTO getCourseHome(Long courseId);

    List<TraineeExerciseDTO> getCourseHomeExercise(Long courseId);

    PageResult<TraineeAllExerciseDTO> getAllExercise(TraineeExercisePageDTO req);

    JoinCourseDTO joinHomeCourse(Long courseId);

    TraineeOnStudyReqpDTO onStudy(TraineeLessionListReqDTO req);

    TraineeLessionListRespDTO getLessionListByCourseId(TraineeLessionListReqDTO req);

    TraineeOnStudyReqpDTO switchLesson(TraineeLessionListReqDTO req);

    TraineeStudyExerciseRespDTO getProjectReport(TraineeProjectReportReqDTO req);

    TraineeStudyExerciseRespDTO getReport(Long exerciseId);

    List<TraineeStudyExerciseSearchRespDTO> getSearch();

    String saveExercise(LessonUserExerciseReqDTO body);
    void updateFinish(LessonUserExercise lessonUserExercise, BigDecimal comprehensiveScore, BigDecimal passingScore);
    Boolean updateExercise(LessonUserExerciseReqDTO body);

    TraineeStuRespDTO getTrainee();
}
